﻿#pragma execution_character_set("utf-8")
#include "mainwidget.h"
#include "resigerwidget.h"
#include "ui_resigerwidget.h"
#include <QPainter>
#include <QCoreApplication>
#include <QImage>
#include <QPixmap>
#include "database.h"
#include "mainwidget.h"

/**
 * @brief 注册窗口构造函数
 * @details 初始化界面并获取应用程序执行路径用于后续文件操作
 * @param parent 父窗口指针
 */
ResigerWidget::ResigerWidget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::ResigerWidget)
{   
    ui->setupUi(this);
    exePath = QCoreApplication::applicationDirPath();
}

ResigerWidget::~ResigerWidget()
{
    delete ui;
}

/**
 * @brief 文件复制操作
 * @details 实现安全的文件覆盖复制逻辑，包含以下特性：
 * - 自动转换路径分隔符
 * - 源文件存在性检查
 * - 目标文件覆盖策略控制
 * @param sourceDir 源文件路径
 * @param toDir 目标路径
 * @param coverFileIfExist 覆盖已存在文件标志
 * @return 操作是否成功
 * @warning 目标路径需要包含文件名，仅支持单文件操作
 */
bool ResigerWidget::copyFileToPathA(QString sourceDir ,QString toDir, bool coverFileIfExist)
{
    toDir.replace("\\","/");
    if (sourceDir == toDir){
        qDebug()<< "aa";
        return true;
    }
    if (!QFile::exists(sourceDir)){
        qDebug()<< "aa1";
        return false;
    }
    QDir *createfile = new QDir;
    bool exist = createfile->exists(toDir);
    if (exist){
        if(coverFileIfExist){
            createfile->remove(toDir);
        }
    }//end if

    if(!QFile::copy(sourceDir, toDir))
    {
        qDebug()<< "sourceDir"<<sourceDir;
        qDebug()<< "toDir"<<toDir;
        qDebug()<< "aa2";
        return false;
    }
    return true;
}

void ResigerWidget::showEvent(QShowEvent *event)
{

}

void ResigerWidget::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);
    QImage t_image;
//    t_image.load(":/image/bg.png");
//    t_image = t_image.scaled(this->width(),this->height());
//    painter.drawPixmap(0,0,this->width(),this->height(),QPixmap::fromImage(t_image));

}


/**
 * @brief 注册按钮点击事件
 * @details 处理用户注册全流程，包含：
 * 1. 授权码验证（硬编码131421）
 * 2. 密码一致性检查
 * 3. 数据库连接管理
 * 4. SQL查询执行和错误处理
 * @warning
 * - 授权码采用硬编码方式存在安全风险
 * - 使用字符串拼接SQL存在注入漏洞
 * - 密码明文存储需改进
 */
void ResigerWidget::on_pushButton_a_clicked()
{
    QString str1 = ui->lineEdit_1->text();
    QString str2 = ui->lineEdit_2->text();
    QString str3 = ui->lineEdit_3->text();
    QString str4 = ui->lineEdit_4->text();
    QString str5 = ui->lineEdit_5->text();
    QString str6 = ui->lineEdit_6->text();
    QString strKey = ui->lineEdit_7->text();

    if(strKey != "131421"){
        QMessageBox msgBox;
        msgBox.setWindowTitle("提示");
        msgBox.setText("授权码错误！");
        msgBox.exec();
        return;
    }
    if(str3!=str4){
        QMessageBox msgBox;
        msgBox.setWindowTitle("提示");
        msgBox.setText("密码不一致！");
        msgBox.exec();
        return;
    }
    if (! DataBasePri::database.open()){//打开数据库
        qCritical() << DataBasePri::database.lastError().text();
        return;
    }
    QSqlQuery query(DataBasePri::database);
    QString instr = QString::fromLocal8Bit("insert into user values('%1','%2','%3','%4','%5')")
            .arg(str1)
            .arg(str2)
            .arg(str3)
            .arg(str5)
            .arg(str6);


    bool ret = query.exec(instr);
    qDebug()<<"ddddddddd"<<query.lastError();
    DataBasePri::database.close();

    if(ret == true){  
        MainWidget::currentUser = str2;
        QMessageBox msgBox;
        msgBox.setWindowTitle("提示");
        msgBox.setText("注册成功！");
        msgBox.exec();
        emit sendDisWidget("m_CoreDisWidget");
    }else{
        QMessageBox msgBox;
        msgBox.setWindowTitle("提示");
        msgBox.setText("注册失败！");
        msgBox.exec();
    }
}

void ResigerWidget::on_pushButton_b_clicked()
{
    emit sendDisWidget("m_LoginWidget");
}
